﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace IISLogAnalyzer
{
    public static class GetIISInfo
    {
        /// <summary>
        /// IISinfo配列にログファイルを格納する
        /// </summary>
        /// <param name="filename"></param>
        /// <returns></returns>
        public static List<IISInfo> GetInfo(string filename)
        {
            List<IISInfo> ListIISInfo = new List<IISInfo>();

            //Shift JISで読み込む
            Microsoft.VisualBasic.FileIO.TextFieldParser tfp =
                new Microsoft.VisualBasic.FileIO.TextFieldParser(
                    filename,
                    System.Text.Encoding.GetEncoding(932));
            //フィールドが文字で区切られているとする
            //デフォルトでDelimitedなので、必要なし
            tfp.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited;
            //区切り文字を,とする
            tfp.Delimiters = new string[] { " " };
            //フィールドを"で囲み、改行文字、区切り文字を含めることができるか
            //デフォルトでtrueなので、必要なし
            tfp.HasFieldsEnclosedInQuotes = true;
            //フィールドの前後からスペースを削除する
            //デフォルトでtrueなので、必要なし
            tfp.TrimWhiteSpace = true;
            while (!tfp.EndOfData)
            {
                //フィールドを読み込む
                string[] fields = tfp.ReadFields();
                DateTime tempDate;
                if (DateTime.TryParse(fields[0], out tempDate))
                {
                    IISInfo TempInfo = new IISInfo();
                    TempInfo.day = tempDate;
                    TempInfo.time = DateTime.Parse(fields[1]);
                    TempInfo.ip = fields[2];
                    TempInfo.method = fields[3];
                    TempInfo.detail = fields[4].ToLower();
                    ListIISInfo.Add(TempInfo);
                }
            }
            return ListIISInfo;
        }
    }
}
